using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
using Newtonsoft.Json;

namespace Common.ServiceResponse.ValueObjects.Facebook
{
    [DataContract]
    public class UserProfile : ResponseBase
    {
        public UserProfile(ResponseDetails responseDetails) : base(responseDetails){ }

        [DataMember]
        public string Id { get; set; }

        [DataMember]
        public string Name { get; set; }

        [DataMember]
        [JsonProperty(PropertyName = "first_name")]
        public string FirstName { get; set; }

        [DataMember]
        [JsonProperty(PropertyName = "middle_name")]
        public string MiddleName { get; set; }

        [DataMember]
        [JsonProperty(PropertyName = "last_name")]
        public string LastName { get; set; }

        [DataMember]
        public string Link { get; set; }

        [DataMember]
        [JsonProperty(PropertyName = "languages")]
        public List<BriefObjectDescription> Languages { get; set; }

        [DataMember]
        [JsonProperty(PropertyName = "third_party_id")]
        public string ThirdPartyId { get; set; }

        [DataMember]
        public string UserName { get; set; }

        public DateTime BirthDay { get; set; }

        [DataMember]
        public string Gender { get; set; }

        [DataMember]
        [JsonProperty(PropertyName = "bio")]
        public string Biography { get; set; }

        [DataMember]
        [JsonProperty(PropertyName = "email")]
        public string Email { get; set; }

        [DataMember]
        [JsonProperty(PropertyName = "religion")]
        public string Religion { get; set; }

        [DataMember]
        public int Timezone { get; set; }

        [DataMember]
        public string Locale { get; set; }

        [DataMember]
        public bool Verified { get; set; }

        [DataMember]
        [JsonProperty(PropertyName = "updated_time")]
        public string UpdatedTime { get; set; }

        [DataMember]
        [JsonProperty(PropertyName = "hometown")]
        public List<BriefObjectDescription> HomeTown { get; set; }

        [DataMember]
        [JsonProperty(PropertyName = "interested_in")]
        public List<string> InterestedIn { get; set; }

        [DataMember]
        [JsonProperty(PropertyName = "location")]
        public BriefObjectDescription Location { get; set; }

        [DataMember]
        [JsonProperty(PropertyName = "political")]
        public string Political { get; set; }

        [DataMember]
        [JsonProperty(PropertyName = "quotes")]
        public string Quotes { get; set; }

        [DataMember]
        [JsonProperty(PropertyName = "relationship_status")]
        public string RelationshipStatus { get; set; }

        [DataMember]
        public byte[] ProfilePicture { get; set; }
    }
}
